#include <vector>
#include <string>
#include <fstream>
#include <cmath>
#include <stdexcept>
#include <random>
#include <iostream>
#include "Neuron.hpp"

#ifndef NETWORK_HPP
#define NETWORK_HPP

// 神经网络基类（抽象类）
class Network {
public:
	// 获取网络输出（纯虚函数）
	virtual std::vector<double> get(const std::vector<double>& input) = 0;
	// 训练网络（纯虚函数）
	virtual void train(const std::vector<double>& input, const std::vector<double>& expected) = 0;
	// 保存模型（纯虚函数）
	virtual void store(const std::string& filename) const = 0;
	// 加载模型（纯虚函数）
	virtual void load(const std::string& filename) = 0;
	
	// 虚析构函数
	virtual ~Network() = default;
};

#endif